Die Utilities von RSys
**********************

In diesem Kapitel werden nun alle Utilities von RSYS beschrieben.  Alle Utilities können per HotKey aufgerufen werden.  In späteren Versionen von RSYS werden sie als eigenständige Tasks laufen, sodaß auch mehrere Utilities gleichzeitig laufen können.

CRC-Check - Berechnung von Checksummen
======================================

Mit dieser kleinen Utility kann die CRC-Checksumme von beliebigen Dateien berechnet werden. Entsprechend der Größe der Datei, dessen CRC berechnet werden soll, muß die CRC-16- oder die CRC-32-Methode gewählt werden.

Ich habe mehrere Programme, die CRC-Summen berechnen, zum Vergleich mit meinen Routinen gestartet.  Alle Programme gaben für ein und dieselbe Datei andere Werte aus, als meine Routine.  Ich suche den Fehler heute noch.  Wenn sich also eine hilfreiche Seele finden sollte, die den Fehler findet, dieser ist eine Tüte Gummibärchen sicher :-)

Das erscheinende Window enthält mehrere Steuerelemente, die jetzt im einzelnen besprochen werden.

Das File-Gadget
---------------

 -- Text-Gadget: File
     In diesem Text-Gadget wird der Dateiname der ausgewählten Datei, deren CRC-Summe berechnet werden soll, angezeigt.

Das Type-Gadget
---------------

 -- Cycle-Gadget: Type
     Mit diesem Gadget kann die zu verwendete Berechnungsart (CRC-16 oder CRC-32) gewählt werden.

Das Select-Gadget
-----------------

 -- Gadget: Select
     Nach dem Anklicken dieses Gadgets erscheint ein FileRequester, der zu einer Eingabe einer Datei auffordert. Wird eine existierende Datei angewählt, wird sofort das File-Gadget aktualisiert.

Das CRC-Gadget
--------------

 -- Text-Gadget: CRC
     In diesem Gadget wird die berechnete Checksumme in Hexadezimalschreibweise dargestellt.

Das Compute-Gadget
------------------

 -- Gadget: Compute
     Das Gadget startet die Berechnung der CRC-Checksumme.

Crypt File - Verschluesseln von Dateien
=======================================

Bei  der Verschlüsselung der Daten werden zwei Methoden verwendet.  Die ROT 13-Methode   ist   ein  einfaches  Verschlüsselungsverfahren,  das  die Buchstaben  eines  Textes  einfach  um  13  Zeichen  nach vorn oder zurück gezählte Buchstaben macht.  Dazu ein Beispiel:  aus der Zeile

                 "Das ist ein Satz, der 1 mal kodiert werden soll!"

     34 68 97 115 32 105 115 116 32 101 105 110 32 83 97 116 122 44 32 100 101
     114 32 49 32 109 97 108 32 107 111 100 105 101 114 116 32 119 101 114 100
     101 110 32 115 111 108 108 33 34

macht das ROT 13-Verfahren

                 "Qnf vfg rva Fngm, qre 1 zny xbqvreg jreqra fbyy!"

     34 81 110 102 32 118 102 103 32 114 118 97 32 70 110 103 109 44 32 113 114
     101 32 49 32 122 110 121 32 120 98 113 118 114 101 103 32 106 114 101 113
     114 97 32 102 98 121 121 33 34

Darunter habe ich mal die entsprechenden ASCII-Kodierungen geschrieben. Es ist deutlich zu erkennen, daß nur Buchstaben kodiert (verschoben) werden.  Interpunktionen und Zahlen werden nicht berücksichtigt.

Das zweite Verfahren basiert auf einen zellularen Automaten ähnlich dem der  Spielsimulation Life.  Dabei wird ein Ring von Zellen angelegt, der dann  durch  ein  vorgegebenes  Paßwort mit Nummern aufgefüllt wird.  Mit diesen Nummern schließlich, wird eine Datei kodiert.  Diese Methode stammt von  der  Verschlüsselungsmethode,  die  in Olaf "Olsen" Barthels term zur Kodierung des Telefonbuches verwendet wird.

Anm.:   Das  Paßwort  ist  überaus  WICHTIG!   Es  sollte  erstens  nie vergessen  und zweitens ein echtes Paßwort verwendet werden.  Das Paßwort-Gadget  sollte  also  nie leer sein, da sonst die Methode zufällige Verschlüsselungen  erzeugt  und  diese Datei nie wieder restauriert werden kann!

Im weiteren werden die Bedienungselemente des Crypt-Windows vorgestellt.

Das Source-Gadget und Select
----------------------------

 -- Gadget: Source/Select
     Mit diesem Gadget kann mit einem FileRequester die Datei ausgewählt werden, die verschlüsselt werden soll. Der Dateiname kann direkt eingegeben werden oder über Select per FileRequester.

Das Dest-Gadget und Select
--------------------------

 -- String-Gadget: Dest/Select
     Mit diesem Gadget kann mit einem FileRequester die Datei ausgewählt werden, in der die verschlüsselten Daten abgespeichert werden sollen.  Der Dateiname kann direkt eingegeben werden oder über Select per FileRequester.

Das Passwd-Gadget
-----------------

 -- String-Gadget: Passwd
     Dieses String-Gadget enthält das Paßwort zum Verschlüsseln der Datei nach dem Verfahren mit dem zellularen Automaten. Das Paßwort ist zwingend erforderlich, jedoch wird die Korrektheit nicht überprüft. Wird also keins angegeben, so ist das eine Einbahnstraßen-Verschlüsselung! Die Datei kann nie wieder restauriert werden! Dieses Gadget ist abgeschaltet, falls die ROT13-Methode verwendet wird.

Das Crypt-ROT13-Gadget
----------------------

 -- Cycle-Gadget: Crypt-ROT13
     Hiermit kann die Methode gewählt werden, mit der die Daten verschlüsselt werden sollen.

Das Encrypt-Gadget
------------------

 -- Gadget: Encrypt
     Mit diesem Gadget wird die Verschlüsselung der Daten gestartet.

Das Decrypt-Gadget
------------------

 -- Gadget: Decrypt
     Mit diesem Gadget wird die Entschlüsselung der Daten gestartet.

List Hunks - Hunk-Struktur ermitteln
====================================

Es kommt immer mal vor, daß man sich für den Aufbau von Dateien beschäftigt. Ein wichtige Dateiart ist hierbei die ladbare oder ausführbare Datei. Diese Dateien können vom System in den Arbeitsspeicher geladen und direkt ausgeführt werden.

Damit dieses korrekt vom System durchgeführt werden kann, müssen die Dateien (Executables) einen bestimmten Aufbau besitzen, die sogenannte Hunk-Struktur. Eine Beschreibung dieser Hunk-Struktur würde an dieser Stelle zu weit führen. Hierbei sei auf weiterführende Literatur verwiesen, die diese Struktur in allen Einzelheiten erläutert.

Mit dieser Utility kann die Hunk-Struktur jeder ladbaren Datei ermittelt und angezeigt werden. Zu diesen Dateien gehören beispielsweise Libraries, Executables, Font-Dateien und Objekt-Bibliotheken. Desweiteren können auch Fehler in der Hunk-Struktur angezeigt werden. Bei einem eventuell aufgetretenen Fehler wird noch fünfmal versucht, einen korrekten Hunk-Eintrag zu finden, danach wird abgebrochen. Die Anzeige der Struktur kann jederzeit mit einem Klick auf das CloseGadget abgebrochen werden.

Nun zu der Beschreibung der einzelnen Gadgets.

Das ListView
------------

 -- ListView: ListView
     In diesem ListView wird die Hunk-Struktur in übersichtlicher Form dargestellt. In der ersten Zeile stehen der Name der Datei und die Größe. Dannach kommt hierarchisch angeordnet der Aufbau der Datei. Hier als Beispiel das Hunk-Listing des Programms RSYS selbst.

             File name : cprogs2:RSysDir/RSys
             File size : 140156

             hunk_header (o: $0,#0 t: $3F3,#1011)
               Count hunks : #3
               First hunk  : #0
               Last hunk   : #2
                 Hunk #0, Length $1DE8C, #122508
                 Hunk #1, Length $4D58, #19800
                 Hunk #2, Length $4, #4

               hunk_code (o: $20,#32 t: $3E9,#1001)
                 Size: $1DE8C, #122508 (MEMF_FAST)

                 hunk_reloc32 (o: $1DEB4,#122548 t: $3EC,#1004)
                  #17  offsets in Hunk #0
                  #2   offsets in Hunk #1
               hunk_end (o: $1DF18,#122648 t: $3F2,#1010)

               hunk_data (o: $1DF1C,#122652 t: $3EA,#1002)
                 Size: $365C, #13916 (MEMF_FAST)

                 hunk_reloc32 (o: $21580,#136576 t: $3EC,#1004)
                  #17  offsets in Hunk #1
                  #868 offsets in Hunk #0
               hunk_end (o: $2236C,#140140 t: $3F2,#1010)

               hunk_bss (o: $22370,#140144 t: $3EB,#1003)
                 Size: $4, #4 (MEMF_FAST)
               hunk_end (o: $22378,#140152 t: $3F2,#1010)

Das Load-Gadget
---------------

 -- Gadget: Load
     Es erscheint ein FileRequester, mit dem die ladbare Datei ausgewählt werden kann. Danach wird die Struktur analysiert und als Liste angezeigt.

Das Save-List-Gadget
--------------------

 -- Gadget: Save List
     Mit einem FileRequester kann eine Datei ausgewählt werden, in der die Liste abgespeichert werden soll. Ist der Text-Formatter aktiviert, erscheint nach einer postiven Auswahl das Text-Formatter-Window.

Find File - Suche nach Dateien
==============================

Es gibt viele Programme, die das komfortable Suchen nach Dateien in Filesystemen unterstützen. Allerdings sind einige Programme mit Sonder- und Spezialfunktionen überladen, sodaß man schon eine Menge Hintergrundwissen einbringen muß, um die Programm überhaupt korrekt bedienen zu können. Dem habe ich hoffentlich Abhilfe schaffen können. Einfach, klein und fein macht diese Utility genau das, was sie soll: Dateien suchen.

Diese  Utility  arbeitet  intensiv  mit  der  Funktion  ExAll() und den Funktionen MatchPattern()/MatchPatternNoCase() der DOS-Library. Dabei werden zuächst alle Dateien bestimmt und währenddessen untersucht, ob es sich jeweils um ein Verzeichnis oder eine Datei handelt.  Trifft dann auch das Suchmuster zu, wird es in das ListView eingetragen.

Hier eine Beschreibung der Bedienungselemente.

Das Devices-ListView
--------------------

 -- ListView: Devices
     In  diesem ListView stehen alle angemeldeten Devices und Assigns.  Wenn ein  Eintrag angeklickt wird, erscheint der Eintrag in dem danebenliegenden ListView.

Das Selected Devices-ListView
-----------------------------

 -- ListView: Selected Devices
     Damit  werden  alle die Verzeichnisse angewählt auf denen Dateien gesucht werden sollen.  Jeder Eintrag, der in den beiden ListViews angeklickt wird, erscheint  automatisch  in  dem  anderen  ListView.  Bei einem Eintrag mit einem   -  davor  handelt  es  sich  um  ein  Assign.   Ich  habe  diese Kennzeichnung  deshalb so gewählt, weil ich dann entsprechend die Einträge sortieren kann.  Erst die echten, dann die logischen Devices.

Das Case-No case-Gadget
-----------------------

 -- Cycle-Gadget: Case/No case
     Hier kann gewählt werden, ob die Dateien case sensitive (Groß- und Kleinschreibung wird berücksichtigt) oder case insensitive (Groß- und Kleinschreibung werden nicht unterschieden) gesucht werden. Lautet z.B.  das Suchmuster Test.exe, so wird mit No case sense sowohl die Datei Test.exe, als auch die Datei TeSt.ExE gefunden.

Sel all und Sel none
--------------------

 -- Gadget: Sel all/Sel none
     Damit  können  alle Einträge vom linken ListView in das rechte gebracht werden  (Sel  all:   alle Verzeichnisse werden durchsucht) und umgekehrt (Sel none:  Kein Verzeichnis soll durchsucht werden).

Das Start-Stop Gadget
---------------------

 -- Gadget: Start/Stop
     Wurden Verzeichnisse ausgewählt und im Pattern-Gadget ein Suchmuster eingegeben, so ist dieses Gadget anwählbar und startet die Suche in den Verzeichnissen des Selected Devices-ListViews.  Wird das Gadget während eine Suche angeklickt, wird nach einer Sicherheitabfrage der Suchvorgang abgebrochen.

Das Save found list-Gadget
--------------------------

 -- Gadget: Save found list
     Nach der Anwahl erscheint ein Filerequester, in dem die Namen der gefundenen Dateien in eine auszuwählende Datei abgespeichert werden können. Ist der Text-Formatter aktiviert, erscheint nach einer postiven Auswahl das Text-Formatter-Window.

Das Pattern-Gadget
------------------

 -- String-Gadget: Pattern
     Hier kann ein Suchmuster (Dateiname oder Pattern) eingegeben werden. Hierbei gelten die üblichen Wildcards und Suchmuster des AmigaOS.

Das Dateityp-Gadget
-------------------

 -- Cycle-Gadget: Dirs + Files/Files/Directories
     Hier  kann  gewählt  werden,  was für ein Typ von Datei gefunden werden soll.

Das Found files-dirs-Gadget
---------------------------

 -- ListView: Found files/dirs
     In  diesem  ListView erscheinen alle gefunden Einträge mit vollständiger Pfadbezeichnung.   Diese  Liste  kann  nach  dem Anklicken des Save found list-Gadgets in eine Datei abgespeichert werden.

Format Disk - Format-Schnittstelle
==================================

Mit Format Disk wird eine kleine Schnittstelle zum Format-Befehl des AmigaDOS angeboten.  Die einzelnen Gadgets werden im folgenden näher beschrieben.

Das Format-Gadget und Select
----------------------------

 -- String-Gadget: Format-Gadget/Select
     In diesem Gadget steht der vollständige Pfadprogrammname des zu verwendenden Format-Befehls.  Dieser lautet üblicherweise

             SYS:System/Format.

     Mit  dem  nebenstehenden  Select-Gadget  kann  das Format-Programm mit einem Filerequester ausgewählt werden.

Das Devs-ListView
-----------------

 -- ListView: Devices
     In  diesem ListView erscheinen alle formatierbaren Devices alphabetisch geordnet.   Das  ausgewählte  Device  wird  dann im zugehörigen Textgadget darunter angezeigt.

Das Disk label-Gadget
---------------------

 -- Gadget: Disk label
     Hier  wird  der Name des Mediums (voreingestellt und systemkonform Empty) eingetragen.

Das Icons-No Icons-Gadget
-------------------------

 -- Cycle-Gadget: Icons/No Icons
     Mit dieser Einstellung wird festgelegt, ob der TrashCan samt Icon nach der Formatierung auf die frische Diskette kopiert werden soll.

Das OFS-FFS-Gadget
------------------

 -- Cycle-Gadget: OFS/FFS
     Damit wird festgelegt, ob die Diskette mit dem neuen FastFileSystem des AmigaOS 2.0 formatiert werden soll, oder im alten Datenformat.

Das No international-International-Gadget
-----------------------------------------

 -- Cycle-Gadget: No international/International
     Hiermit wird das Handling der länderspezifischen Sonderzeichen in Dateinamen festgelegt.

Das Befehls-Gadget
------------------

 -- String-Gadget: Befehls-Gadget
     In  diesem  Stringgadget  ohne Namen steht der vollständige Befehl, der nach Festlegung aller Kriterien als eigenständiger Prozeß ausgeführt wird.

Das Format-Gadget
-----------------

 -- Gadget: Format
     Damit wird der Format-Befehl in einem Shell-Window aufgerufen.

Das Quick-Gadget
----------------

 -- Gadget: Quick
     Damit wird der Format-Befehl in einem Shell-Window aufgerufen. Zuvor wird die Option QUICK an den Befehl drangehängt. Diese Option startet die Formatierung des Directory-Bereiches der Diskette, also nicht der ganzen Diskette.

Save Windows - IFF-Dateien von Windows
======================================

Hierbei kam auch eine Routine zum Einsatz, die ich von Olsens term geratzt habe.  Leider funktioniert Olsens Routine nicht mit allen Fenstern, was an der Verwendung der Funktion ClipBlit() liegt, die zwar die ausgewählte BitMap eines Windows berücksichtigt, aber die überlappenden Bereiche anderer Fenster mit Datenmüll füllt.  Außerdem verwendet Olsen die BitMap des zu einem Fenster gehörenden Screen-RastPorts anstelle des Window-RastPorts.

Dieses  Problem  der  Überlappung  habe  ich  durch  die Verwendung der Routinen  BltBitMap()  und  WindowToFront()  behoben.   Damit  wird das zu speichernde  Fenster  nach vorne geholt, weswegen auch keine Überlappungen mit  anderen  Fenstern auftreten.  Dieses Verfahren funktioniert natürlich nicht mit Backdrop-Fenstern.

Es  muß  aber eine Möglichkeit geben, nur den Fensterinhalt abspeichern zu  können.   Immerhin kann es die DumpRastPort-Routine des printer.device auch.   Wer  also  sachdienliche  Hinweise  zu diesem Thema hat, möge sich bitte mit mir in Verbindung setzen.

Das Windows-ListView
--------------------

 -- Gadget: Windows
     In  diesem  ListView  erscheinen alle geöffneten Windows, die im System bekannt  sind.  Dabei werden auch die aufgeführt, die auf anderen Screens als dem WorkBench Screen geöffnet wurden.

Das IFF File-Gadget
-------------------

 -- Gadget: IFF File
     Wurde ein Fenster angewählt, wird dieses Gadget aktiviert.  Nach dem Anklicken erscheint ein Filerequester mit der Aufforderung, eine Datei auszuwählen, in der das angewählte Window als IFF-Datei abgespeichert werden soll.

Das Rescan windows-Gadget
-------------------------

 -- Gadget: Rescan windows
     Damit kann die Window-Liste aktualisiert werden.  Dies geschieht nach dem Abspeichern eines Windows automatisch.

Check Libraries - Testen der ROM-Libraries
==========================================

Alle  im  ROM  angelegten Libraries werden gecheckt, ob sie von anderen Programmen gepatcht wurden.  Sehr nützlich, um eventuell installierte Viren aufzuspüren.

Dazu wird eine externe Datei verwendet, die in einem bestimmten Format vorliegt. In dieser stehen alle Libraries und Library-Offsets drin, deren Einträge im System überprüft werden sollen. Mit einem mitgelieferten AREXX-Programm kann diese Datei einfach aus den FD-Files erzeugt werden.

Search - Die Suchfunktion von RSys
==================================

Mit dieser komfortablen Suchfunktion hat der Benutzer die Möglichkeit, in der Liste des Hauptfensters nach einem String suchen zu lassen. Die Suchmethode ist einfach implementiert worden, d.h. es wird die Liste von Anfang an (oder vom letzten gefundenen Eintrag aus) durchsucht und dabei getestet, ob sich der eingegebene String als Teilstring im Listeneintrag befindet.

War der Test erfolgreich, wird der gefundene Eintrag zum obersten Eintrag im ListView gemacht. Der String ist hierbei "case-sensitiv" einzugeben, Groß- und Kleinschreibung ist also zu berücksichtigen! Die Taste ESC beendet die Eingabe und betrachtet die Eingabe als abgebrochen, ebenso wie das Cancel- und das Closegadget.

Nach der Anwahl des entsprechenden Menüpunktes erscheint ein kleines Fenster mit drei Gadgets:

Das String-Gadget
-----------------

 -- Gadget: String-Gadget
     In diesem Gadget kann der Suchstring eingegeben werden. Groß- und Kleinschreibung muß berücksichtigt werden. Die Länge des Strings ist maximal 40 Zeichen lang. Nach dem Öffnen des Eingabefensters ist dieses Gadget automatisch aktiv.

Das Search-Gadget
-----------------

 -- Gadget: Search-Gadget Taste S
     Ist die Eingabe abgeschlossen, wird nach dem Gadget-Klick der String intern übernommen und eine Vorwärtssuche gestartet.

Das Cancel-Gadget
-----------------

 -- Gadget: Cancel-Gadget
     Die Eingabe wird abgebrochen. Der eventuell eingegebene String wird NICHT intern übernommen.